//
//  LengthOfLongestSubstring.swift
//  LeetCodeSummary
//
//  Created by WangYonghe on 2020/6/30.
//  Copyright © 2020 WangYonghe. All rights reserved.
//  3. 无重复字符的最长子串   tag:哈希表 双指针 字符串 Sliding Window

import UIKit

/*
 3. 无重复字符的最长子串
 给定一个字符串，请你找出其中不含有重复字符的 最长子串 的长度。

 示例 1:

 输入: "abcabcbb"
 输出: 3
 解释: 因为无重复字符的最长子串是 "abc"，所以其长度为 3。
 示例 2:

 输入: "bbbbb"
 输出: 1
 解释: 因为无重复字符的最长子串是 "b"，所以其长度为 1。
 示例 3:

 输入: "pwwkew"
 输出: 3
 解释: 因为无重复字符的最长子串是 "wke"，所以其长度为 3。
      请注意，你的答案必须是 子串 的长度，"pwke" 是一个子序列，不是子串。
 */

class LengthOfLongestSubstring: NSObject {
    
    func lengthOfLongestSubstring(_ s: String) -> Int {
    
        if s.count == 0 {
            return 0
        }
        
        var maxStr = ""
        var currentStr = ""
        for char in s{
            while currentStr.contains(char) {
                currentStr.remove(at: currentStr.startIndex)
            }
            currentStr.append(char)
            if currentStr.count > maxStr.count {
                maxStr = currentStr
            }
        }
        return maxStr.count
    }
    
    
}
